package controle;


import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import conexao.ConexaoBancoDeDados;
import entidades.Cliente;
public class ControleCliente {

	public void salvarCliente(Cliente cliente) {
		Session session = ConexaoBancoDeDados.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		try {
			session.save(cliente);
			session.getTransaction().commit();
		} catch (Exception e) {
			session.getTransaction().rollback();
		}
	}
	
	public void deletarCliente(Cliente cliente,int id){  
			Session session = ConexaoBancoDeDados.getSessionFactory()
				.getCurrentSession();
		  try{  
		    session.beginTransaction();  
		    cliente = (Cliente) session.load(Cliente.class, id);  
		    System.out.println("Iniciando a Remoção");  
		    session.delete(cliente);  
		    session.getTransaction().commit();
		    System.out.println("Formulario Removido");  
		  }catch (Exception e) {  
		    System.out.println("Erro: " +"Não foi possivel remover o formulario");  
		    session.getTransaction().rollback();
		}  
	}
	
	public void deletarCliente(Cliente cliente){  
		Session session = ConexaoBancoDeDados.getSessionFactory()
			.getCurrentSession();
	  try{  
	    session.beginTransaction();    
	    System.out.println("Iniciando a Remoção");  
	    session.delete(cliente);  
	    session.getTransaction().commit();
	    System.out.println("Formulario Removido");  
	  }catch (Exception e) {  
	    System.out.println("Erro: " +"Não foi possivel remover o formulario");  
	    session.getTransaction().rollback();
	}  
}
		public void fecharSessao (Cliente cliente){
			Session session = ConexaoBancoDeDados.getSessionFactory().getCurrentSession();
			session.close();
		}
		public List<Cliente> pesquisarAll () {
			Session session = ConexaoBancoDeDados.getSessionFactory()
			.getCurrentSession();
			List<Cliente> lista = null;
			  try{  
			    session.beginTransaction();  
			    Query query = session.createQuery("from Cliente");
			    lista = query.list();  
			    session.getTransaction().commit();
			  }catch (Exception e) {  
			    System.out.println("Erro: " +"Nao foi possivel remover o formulario");  
			    session.getTransaction().rollback();
			}
			  return lista;
		}
		
		public List<Cliente> pesquisarPorNome (String nome) {
			Session session = ConexaoBancoDeDados.getSessionFactory()
			.getCurrentSession();
			List<Cliente> lista = null;
			  try{  
			    session.beginTransaction();  
			    Query query = session.createQuery("from Cliente where nome = :strnome");
			    query.setString("strnome", nome);
			    lista = query.list();  
			    session.getTransaction().commit();
			  }catch (Exception e) {  
			    System.out.println("Erro: " +"Nao foi possivel remover o formulario");  
			    session.getTransaction().rollback();
			}
			   return lista;
		}	

	public Cliente pesquisarPorNomeUnico(String nome) {
		Session session = ConexaoBancoDeDados.getSessionFactory()
				.getCurrentSession();
		Cliente cliente = null;
		try {
			session.beginTransaction();
			Query query = session
					.createQuery("from Cliente where nome = :strnome");
			query.setString("strnome", nome);
			cliente = (Cliente) query.uniqueResult();
			session.getTransaction().commit();
		} catch (Exception e) {
			System.out.println("Erro: "
					+ "Nao foi possivel remover o formulario");
			session.getTransaction().rollback();
		}
		return cliente;
	}
	}


